from copy import deepcopy


def countAround(m, x, y):
    res = 0
    for i in [-1, 0, 1]:
        for j in [-1, 0, 1]:
            try:
                res += 1 if not (i == 0 and j == 0) and m[x + i][y + j] == 'X' else 0
            except IndexError:
                continue
    return res


def countTotalX(m):
    res = 0
    for row in m:
        for col in row:
            if col == 'X':
                res += 1
    return res


def simulate(maps):
    count = []
    newMaps = [['.' for _ in range(1000)] for _ in range(1000)]
    for i in range(len(maps)):
        for j in range(len(maps[i])):
            if maps[i][j] == 'X':
                newMaps[500 + i][500 + j] = maps[i][j]
    # print(countNumber(newMaps))

    for _ in range(100):
        maps = deepcopy(newMaps)
        count.append(countTotalX(newMaps))
        print(count)
        for i in range(1000):
            for j in range(1000):
                cnt = countAround(maps, i, j)
                if maps[i][j] == 'X':
                    if cnt < 2 or cnt > 3:
                        newMaps[i][j] = '.'
                    else:
                        newMaps[i][j] = 'X'
                else:
                    if cnt == 3:
                        newMaps[i][j] = 'X'


if __name__ == '__main__':
    simulate([
        ['.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.',
         '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', ],
        ['.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.',
         '.', '.', '.', 'X', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', ],
        ['.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.',
         '.', 'X', '.', 'X', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', ],
        ['.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', 'X', 'X', '.', '.', '.', '.', '.', '.', 'X',
         'X', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', 'X', 'X', '.', ],
        ['.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', 'X', '.', '.', '.', 'X', '.', '.', '.', '.', 'X',
         'X', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', 'X', 'X', '.', ],
        ['.', 'X', 'X', '.', '.', '.', '.', '.', '.', '.', '.', 'X', '.', '.', '.', '.', '.', 'X', '.', '.', '.', 'X',
         'X', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', ],
        ['.', 'X', 'X', '.', '.', '.', '.', '.', '.', '.', '.', 'X', '.', '.', '.', 'X', '.', 'X', 'X', '.', '.', '.',
         '.', 'X', '.', 'X', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', ],
        ['.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', 'X', '.', '.', '.', '.', '.', 'X', '.', '.', '.', '.',
         '.', '.', '.', 'X', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', ],
        ['.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', 'X', '.', '.', '.', 'X', '.', '.', '.', '.', '.',
         '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', ],
        ['.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', 'X', 'X', '.', '.', '.', '.', '.', '.', '.',
         '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', ],
        ['.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.',
         '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', ],
    ])
    """
    0  -> 36
                +12
    10 -> 48
                +6
    20 -> 54
                -13
    30 -> 41
                +12
    40 -> 53
                +6
    50 -> 59
                -13
    60 -> 46
                +12
    70 -> 58
                +6
    80 -> 64
                -13
    90 -> 51
    """
    ans, pool = 36, [12, 6, -13]
    for i in range(1000000000 // 10):
        ans += pool[i % 3]
    print(ans)
